//package com.hexing.forecast.LSTM;
//
//import org.tensorflow.*;
//import org.tensorflow.ndarray.FloatNdArray;
//import org.tensorflow.ndarray.Shape;
//import org.tensorflow.op.Ops;
//import org.tensorflow.op.core.*;
//import org.tensorflow.types.TFloat32;
//
//import java.nio.FloatBuffer;
//
//public class LSTMPredictionDemo {
//    public static void main(String[] args) {
//        try (Graph graph = new Graph()) {
//            Ops tf = Ops.create(graph);
//
//            // 定义输入数据
//            float[][] input = {
//                {0.1f, 0.2f, 0.3f},
//                {0.2f, 0.3f, 0.4f},
//                {0.3f, 0.4f, 0.5f},
//                {0.4f, 0.5f, 0.6f}
//            };
//
//            // 转换输入数据为Tensor
//            FloatNdArray inputTensor = TFloat32.tensorOf(Shape.of(input.length, input[0].length));
//            FloatBuffer inputBuffer = inputTensor.write();
//            for (float[] row : input) {
//                inputBuffer.put(row);
//            }
//
//            inputBuffer.close();
//
//            // 创建LSTM层
//            LSTMCell lstmCell = new LSTMCell(tf);
//            LSTMCell.Options lstmOptions = LSTMCell.options().forgetBias(1.0f);
//            LSTMBlockCell lstmBlockCell = LSTMBlockCell.create(tf);
//
//            // 设置LSTM层的参数
//            Operand<TFloat32> weights = tf.constant(new float[][]{{1.0f}, {2.0f}, {3.0f}}, TFloat32.DTYPE);
//            Operand<TFloat32> biases = tf.constant(new float[]{0.1f}, TFloat32.DTYPE);
//
//            // 构建LSTM模型
//            Operand<TFloat32> lstmOutput = lstmCell.apply(
//                    tf,
//                    lstmOptions,
//                    tf.constant(inputTensor),
//                    weights,
//                    biases
//            ).getOutput();
//
//            // 创建会话并运行图
//            try (Session session = new Session(graph)) {
//                Tensor<?> output = session.runner().fetch(lstmOutput).run().get(0);
//                float[][] outputArray = new float[input.length][1];
//                output.copyTo(outputArray);
//
//                // 打印预测结果
//                for (float[] row : outputArray) {
//                    System.out.println(row[0]);
//                }
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//}